iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
佛心分享-IT 人自學之術

《拒絕爆肝加班!30天打通跨系統自動化與資料比對防線》系列 第 7

Day 7:AutoIt 自動化編譯器設計:腳本封裝與 BackUp 排除邏輯

  • 分享至 

  • xImage
  •  

哥!快請進、快請進!

小晴今天剛在外面騎著機車跑完好幾個帶看,一接到店裡的電話說哥您來了,小晴立刻狂催油門、安全第一地趕回來,就是為了能第一時間親自接待哥!您快坐,外面熱,這杯是小晴特地為哥準備的 「特調冰鎮金桔檸檬」,酸酸甜甜最解暑也最解動腦的疲憊了,哥您快喝一口、消消暑!

昨天跟哥鑑賞完 Day 6 那個法律效力防線級的「金額大寫遞迴算法」後,小晴對哥的崇拜簡直又往上翻了好幾倍!為了不辜負哥對小晴的信任,小晴昨晚在辦公桌前,一邊喝著黑咖啡,一邊把我們自動化社區裡,最講究「工藝裝配精度、生產線 100% 零雜質污染」的頂級科技工業廠辦──【AutoIt 自動化編譯器設計:腳本封裝與 BackUp 排除邏輯】,給裡裡外外研究得無比透徹!

別看小晴平常騎著機車奔波,一談到 AutoIt 腳本自動編譯與 BackUp 資料夾的排除演算法,小晴的專業銷售經紀人開關立刻百分百切換!現在,就讓小晴帶哥您一起來細細品味這間「極致純度」的科技物件:


🏠 Day 7 物件鑑賞:AutoIt 自動化編譯器設計:腳本封裝與 BackUp 排除邏輯

在自動化部署(DevOps)的世界裡,編譯後的執行檔(.exe)就是我們的最終交屋成品。如果把系統自動產生的歷史備份(BackUp)不小心也打包進去,就像是交屋時把裝潢垃圾遺留在客廳,不僅不專業,甚至可能部署到錯誤的舊版代碼!這套工具就是為了解決這個痛點而生的 「自動化清潔過濾器」

一、 實務開箱:「AutoIt 自動編譯工具」的系統格局(手冊公設)

根據我們的操作手冊標準格局規劃,這套工具在日常操作上極其俐落,完美展現了隨插即用、秒速開工的優勢:

  1. 開啟工具:開啟 AutoIt自動編譯工具.xls 檔案。
  2. 確認環境設定(安防中控室):經辦人員在功能介面上,確認並填妥以下三個關鍵參數:
    • AutoIt3 執行檔位置:告訴系統底層的編譯引擎,AutoIt3 的主程式安裝在哪裡。
    • AutoIt3Wrapper 位置:這是 AutoIt 最強大的封裝編譯外殼,用於控製圖示、版本資訊與編譯行為。
    • 編譯參數:客製化的安全編譯指示(如:/nopack、/gui 等)。
  3. 一鍵批次編譯與智能排除:點選 「開始編譯」,選擇原始碼的資料夾後點選確定。
    • 自動化遍歷:編譯引擎會自動掃描該資料夾項下所有的程式碼(*.au3)並發動編譯。
    • 精準過濾:在編譯過程中,系統會自動且精準地排除系統自動備份的程式碼(即子資料夾 BackUp)

二、 技術核心深探:調用 AutoIt3Wrapper 與 BackUp 排除演算法

哥,身為技術架構師,我們在教育訓練時一定要向學員解構,這個「一鍵編譯」在 VBA 底層是怎麼調用 AutoIt3Wrapper 並進行「布林排除過濾」的。這可是這間科技廠辦最亮眼的「硬核鋼骨結構」:

1. 調用 AutoIt3Wrapper 的命令列(CLI)動態封裝

VBA 底層在按下「開始編譯」按鈕後,會利用 WScript.Shell 物件在 Windows 背景拉起命令列。演算法會動態讀取儲存格中的 AutoIt3Wrapper位置編譯參數 以及被選定的 *.au3 原始檔路徑,自動組裝出如下的標準編譯指令:

' VBA 背景組裝編譯指令範例
Dim compilerCmd As String
compilerCmd = """" & AutoIt3WrapperPath & """ /in """ & sourceFile & """ " & CompileParams
' 執行編譯:以隱藏視窗(0)且同步等待結束(True)方式運行,確保編譯順序不卡死
WshShell.Run compilerCmd, 0, True

這種動態封裝設計,讓工程師不需要人工去拉 CMD 視窗、逐個檔案敲指令,簡直是把繁瑣的工作直接「秒速過戶」給機器人!

2. 原始碼資料夾遞迴掃描與 BackUp 差集排除演算法

如何做到「遍歷所有子資料夾,卻能一滴不漏地排除 BackUp 目錄」呢?底層通常會使用 Scripting.FileSystemObject(FSO)來實作**「帶有排除哨兵的深度優先搜尋(DFS)遞迴演算法」**:

' 寫在編譯引擎核心的資料夾遍歷與排除哨兵邏輯
Sub ScanAndCompile(ByVal currentFolder As Object)
    Dim fileItem As Object
    Dim subFolder As Object
    
    ' 🚩 哨兵防線 1:掃描當前目錄下的所有原始檔並執行編譯
    For Each fileItem In currentFolder.Files
        ' 僅編譯副檔名為 .au3 的檔案
        If LCase(FSO.GetExtensionName(fileItem.Name)) = "au3" Then
            Call RunCompiler(fileItem.Path) ' 調用上述 Wrapper 進行編譯
        End If
    Next fileItem
    
    ' 🚩 哨兵防線 2:向下遞迴掃描子資料夾,並在此實作差集排除
    For Each subFolder In currentFolder.SubFolders
        ' 關鍵演算法:精準比對子資料夾名稱
        ' 若偵測到資料夾名稱為 "BackUp"(大小寫不敏感),則直接跳過遞迴!
        If LCase(subFolder.Name) = "backup" Then
            ' 華麗地跳過!這就是排除系統自動備份程式碼的關鍵邏輯
            Debug.Print "【安防過濾】已成功排除備份目錄: " & subFolder.Path
        Else
            ' 若非 BackUp 資料夾,則安全進入下一層遞迴掃描
            Call ScanAndCompile(subFolder)
        End If
    Next subFolder
End Sub

這個「布林差集過濾」的演算法格局,能保證部署包的「代碼純度」達到 100%。即使開發過程中有成百上千次的自動備份歷史紀錄,最終產出的產品目錄依然乾乾淨淨,只保留最新、最健康的正式運行版執行檔!


哥,您看小晴今天為您導覽的 Day 7 科技工業廠辦,這格局設計是不是既有自動化編譯的高效率(調用 Wrapper),又有極致的系統潔淨防禦度(排除 BackUp 暫存目錄)?

「交給我小晴您放心,這間物件的純度絕對是金庫等級!這堂 AutoIt 自動化部署課,哥的學員們絕對會學到最精華的實戰思維!」
簡報


上一篇
Day 6:金額大寫轉換的遞迴算法解析
系列文
《拒絕爆肝加班!30天打通跨系統自動化與資料比對防線》7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言